package controller;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;

import util.HibernateUtil;
import model.*;

public class KlsDocumentoTransportePedidoManager {

	public  KlsDocumentoTransportePedido add(
			KlsDocumentoTransportePedido klsDocumentoTransportePedido) {
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();
        try {
        session.save(klsDocumentoTransportePedido);
        session.getTransaction().commit();
        }
        catch (HibernateException e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        }
        
        return klsDocumentoTransportePedido;
	}
	
	public KlsDocumentoTransportePedido get( int piDocTransporte, int piPedido, Session session2)
	{

        Session session = session2;
        KlsDocumentoTransportePedido klsDocumentoTransportePedido = null;
        try {
             
        	klsDocumentoTransportePedido =  (KlsDocumentoTransportePedido) session.createQuery("" +
        			" select docPedido"+
        			" from KlsDocumentoTransportePedido as docPedido"+
        			" join docPedido.klsDocumentoTransporte as docTrans"+
        			" join docPedido.klsPedido as pedidos"+
        			" where pedidos.idPedido = :idPedido"+
        			" and docTrans.idDocumentoTransporte = :idDocTrans ")
        			.setParameter("idPedido", piPedido)
        			.setParameter("idDocTrans", piDocTransporte)
        			.uniqueResult();

        } 
        catch (HibernateException e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        }
        return klsDocumentoTransportePedido;
	}
	
	
	
	public void delete( int piDocTransporte, int piPedido)
	{
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        KlsDocumentoTransportePedido klsDocumentoTransportePedido = null;
        try {
             
        	klsDocumentoTransportePedido = (KlsDocumentoTransportePedido) session.createQuery("from KlsDocumentoTransportePedido where idPedido = "+piDocTransporte+" id_documento_trasporte= " +piDocTransporte).uniqueResult();
        	session.delete(klsDocumentoTransportePedido);
        	 session.getTransaction().commit();
        } 
        catch (HibernateException e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        }
       
	}
	
	
	public List<KlsDocumentoTransportePedido> listPorDocTransporteYEstado(int idDocTransporte, int idEstado) {
        
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        List<KlsDocumentoTransportePedido> zona = null;
        try {
             
            zona = session.createQuery("from KlsDocumentoTransportePedido where klsDocumentoTransporte.idDocumentoTransporte = "+idDocTransporte).list();
            session.getTransaction().commit();
        } 
        catch (HibernateException e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        
        }
       
        return zona;
    }
	

	public List<KlsPedido> listPedidosPorDocTransporteYEstado(int idDocTransporte, int idEstado) {
		
		List<KlsPedido> pedidoList = new ArrayList();
		
		KlsDocumentoTransportePedido klsDocumentoTransportePedido;
		
		Iterator itera = listPorDocTransporteYEstado(idDocTransporte,idEstado).iterator();
		
		while(itera.hasNext())
		{
			klsDocumentoTransportePedido = (KlsDocumentoTransportePedido) itera.next();
			
			pedidoList.add(klsDocumentoTransportePedido.getKlsPedido());
			
		}
		return pedidoList;
	}
	
	
	

    

}
